package com.yf.exam.modules.trainingarchives.pdfexport;

import com.itextpdf.text.*;
import com.itextpdf.text.pdf.*;

import java.io.FileOutputStream;
import java.util.Arrays;
import java.util.List;

public class PdfTableExample {

    public static void main(String[] args) {
        // 数据：假设你有姓名和成绩的列表
        List<String[]> data = Arrays.asList(
                new String[]{"张三", "90", "85", "80"},
                new String[]{"李四", "88", "92", "78"},
                new String[]{"王五", "85", "90", "89"}
        );

        // PDF文件输出路径
        try {
            Document document = new Document();
            PdfWriter.getInstance(document, new FileOutputStream("students.pdf"));
            document.open();

            // 创建一个4列的表格（姓名 + 3个成绩列）
            PdfPTable table = new PdfPTable(4); // 4列：姓名，成绩1，成绩2，成绩3

            // 设置表头
            addTableHeader(table);

            // 填充数据
            addRows(table, data);

            // 将表格添加到PDF中
            document.add(table);

            document.close();
            System.out.println("PDF创建成功!");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // 添加表头
    private static void addTableHeader(PdfPTable table) {
        // 使用自定义字体（可以处理中文）
        Font headerFont = new Font(Font.FontFamily.HELVETICA, 12, Font.BOLD);

        PdfPCell header = new PdfPCell(new Phrase("姓名", headerFont));
        header.setHorizontalAlignment(Element.ALIGN_CENTER);
        table.addCell(header);

        header = new PdfPCell(new Phrase("成绩1", headerFont));
        header.setHorizontalAlignment(Element.ALIGN_CENTER);
        table.addCell(header);

        header = new PdfPCell(new Phrase("成绩2", headerFont));
        header.setHorizontalAlignment(Element.ALIGN_CENTER);
        table.addCell(header);

        header = new PdfPCell(new Phrase("成绩3", headerFont));
        header.setHorizontalAlignment(Element.ALIGN_CENTER);
        table.addCell(header);
    }

    // 添加数据行
    private static void addRows(PdfPTable table, List<String[]> data) {
        // 使用自定义字体（可以处理中文）
        Font rowFont = new Font(Font.FontFamily.HELVETICA, 12);

        for (String[] row : data) {
            // 确保姓名能够正确显示
            for (String cellData : row) {
                PdfPCell cell = new PdfPCell(new Phrase(cellData, rowFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                table.addCell(cell);
            }
        }
    }
}
